package com.hh.TreeQuestions;

/**
 * @Author hanghao
 * @Date 2023/7/3 15:39
 * @Version 1.0
 * 二叉树的直径
 * easy
 * 注意： 每一层都可以计算当前的最大深度，因为最大深度的地方不一定要经过根节点， 每一个节点向上返回节点的深度，
 */

public class No543 {
    int maxd = 0;

    public int diameterOfBinaryTree(TreeNode root) {
        depth(root);
        return maxd;
    }

    public int depth(TreeNode node) {
        if (node == null) {
            return 0;
        }
        int Left = depth(node.left);
        int Right = depth(node.right);
        maxd = Math.max(Left + Right, maxd);//将每个节点最大直径(左子树深度+右子树深度)当前最大值比较并取大者
        return Math.max(Left, Right) + 1;//返回节点深度
    }
}
